#include<iostream>
#include<unistd.h>
#include<fcntl.h>
#include<cstring>


///////////////////////////////////////////重定向//////////////////////////////////
//////输入重定向 只读
int main ()
{
	////////输入重定向，不从默认输入 0 中读，而改为从其他文件中读入数据
	////////比如这里重定向成从first.txt中读入
	int fd=open("first.txt",O_RDONLY);
	if(fd==-1)
	{
		perror("open");
		exit(1);
	}
	int x=dup2(fd,0);
	if(x==-1)
	{
		perror("dug2");
		exit(1);
	}	
        std::string line;
        while (std::getline(std::cin, line)) 
	{
        std::cout << "读取: " << line << std::endl;
        }
	close(fd);
	return 0;

}


///////////////////////////////追加重定向 创建+只写+追加
/////////////重复运行时体现出追加重定向
//int main ()
//{
//	int fd=open("test.txt",O_CREAT|O_WRONLY|O_APPEND,0666);
//	if(fd==-1)
//	{
//		perror("open");
//		exit(1);
//	}
//	int x=dup2(fd,1);
//	if(x==-1)
//	{
//		perror("dup2");
//		exit(1);
//	}
//	printf("时间戳：%ld\n",time(NULL));
//	close(fd);
//	return 0;
//}

//////////////////////////输出重定向 创建+只写+清空
//int main ()
//{
//    int fd=open("test.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
//    if(fd==-1)
//    {
//            perror("open");
//            exit(1);
//
//    }
//    int x=dup2(fd,1);
//    if(x==-1)
//    {
//            perror("dup2");
//            exit(1);
//    }
//    int num=10;
//    while(num--)
//    {
//            printf("It's my files.c program\n");
//    }
//    close(fd);
//    return 0;
//
//}
//

//////////////////////////////////基础IO和默认输出
//int main ()
//{
    //int fd=open("test.txt",O_CREAT|O_WRONLY|O_TRUNC,0666);
    //printf("%d\n",fd);
    //int num=10;
    //std::string buffer="Hello My Files!"; 
    //while(num--)
    //{
    //    write(fd,buffer.c_str(),buffer.size());
    //    write(fd,"\n",1);
    //}
    //write(1,buffer.c_str(),5);
    //write(1,"\n",1);
    //close(fd);
    //return 0;

//}

